belonarfandomcom_ar-20200215-history
وحدة:Flagg
local p = {} function p.main(frame) --Get input arguments local args = require('Module:Arguments').getArgs(frame,{valueFunc = function(key,value) if value then value = mw.text.trim(value) if key "image" or value~="" then return value end end return nil end }) --Call main function return p.luaMain(frame,args) end function p.luaMain(frame,args) function emp2nil(x) if x "" then return nil else return x end end function space2emp(x) if string.find(x,"^%s*$") then return "" else return x end end function nopx(x) if x~=nil and (string.find(x,"^%d+$") or string.find(x,"^%d+px$")) then return string.gsub(x,"^(.*)px","%1") else return nil end end --Country & mode parameters local mode = string.lower(args1 or "usc") local mi = string.sub(mode,1,1) local ms = string.sub(mode,2,2) local mn = string.sub(mode,3,3) local me = string.sub(mode,4,-1) local find= require('Module:تحويلات بلدان').red ------------------------------------ Just in Arabic local country = find( args2 ) or "" local avar = args"avar" or args"altvar" local clink = args"clink" or args"link" --Get country data & altvar data local data, alink, amap, asuf , apre if avar then local age = args"age" or "" local aalias amap, aalias = require("Module:Flagg/Altvar data").alttable(age) avar = string.gsub(string.lower(avar or ""),"[ \-]","") avar = aaliasavar or avar if not amapavar then error("Unknown avar") end local apar = {altvar=amapavar.altvar;mw=amapavar.mw;age=amapavar.age;variant=args"variant" or args3} data = require("Module:CountryData").gettable(frame,country,apar) asuf = amapavar.altlink apre = amapavar.linkpre alink = dataalias-"..amap[avar.altvar] or (apre or '').." "..(clink or dataalias" or data.alias or country).." "..asuf else data = require("Module:CountryData").gettable(frame,country,{variant=args"variant" or args3}) avar = "" amap = {""={altvar=""}} end --Name and link parameters clink = clink or data.alias or country local pref = args"pref" local suff = args"suff" or asuf if not pref and not suff then --Default prefix pref = "علم" end local yn_map = {""=0; "0"=0; "no"=0; "n"=0; "1"=1; "yes"=1; "y"=1} local fthe = (args"pthe" and yn_map[args"pthe"]~=0) or (args"the" and yn_map[args"the"]~=0) local nthe = (args"nthe" and yn_map[args"nthe"]~=0) or (args"the" and yn_map[args"the"]~=0) fthe = fthe and (pref and "ا" or "ا").."ل " or "" nthe = nthe and (pref and "ا" or "ا").."ل " or "" local flink = args"plink" or args"flink" or alink or space2emp((pref or "").." ")..fthe..clink..space2emp(" "..(suff or "")) local fsec = args"psection" or args"section" local csec = args"csection" or args"section" fsec = fsec and "#"..fsec or "" csec = csec and "#"..csec or "" local name = args"name" if string.find(me,"e") then local cname = dataalias-"..amap[avar.altvar] or dataalias" or data.alias or country if mn "f" then name = name or space2emp((pref or "").." ")..nthe..cname..space2emp(" "..(suff or "")) else name = name or cname end else if mn "f" then name = name or space2emp((pref or "").." ")..nthe..country..space2emp(" "..(suff or "")) else name = name or country end end --Image parameters local pimage = args"image" local placeholder = "Flag placeholder.svg" local variant = args"variant" or args3 or "" local image_map = {""=placeholder; "none"=placeholder; "blank"=placeholder} if pimage then --Remove namespace pimage = string.gsub(pimage,"^FfIiLlEe:(.*)$","%1") pimage = string.gsub(pimage,"^IiMmAaGgEe:(.*)$","%1") end local iname = image_mappimage or pimage local size = args"size" or args"sz" local size_map = {xs="12x8px"; s="17x11px"; m="23x15px"; l="32x21px"; xl="46x30px"} if size nil or string.find(size,"^%d*x?%d+px$") then --valid EIS size (..px, x..px or ..x..px), or unset elseif string.find(size,"^%d*x?%d+$") then size=size.."px" --EIS size without "px" suffix else size = size_mapsize or nil end local border = frame:getParent().args"border" or frame.args"border" if iname then size = size or "23x15px" if yn_mapborder 0 then border = "" else border = "|border" end else iname = dataalias-"..amap[avar.altvar.."-"..variant] or dataalias-"..variant or dataalias-"..amap[avar.altvar] or dataalias" or placeholder size = size or emp2nil(data.size) or "23x15px" if border then if yn_mapborder 0 then border = "" else border = "|border" end else local autoborder = data"border-"..variant or data["border-"..amapavar.altvar] or data.border if autoborder and autoborder~="border" then border = "" else border = "|border" end end end local am = "" if args"alt" or string.find(me,"a") then am = args"alt" or args"name" or country am = am.."|"..am end --Build display name local naaaa = args"naaaa" or 'بيانات بلد' local text = args"text" if not text then if mn "x" then --no text text = "" elseif mn "p" or mn "f" then --prefix/suffix link text = ""..name.."" elseif mn "b" then --both prefix/suffix and normal country link if pref and suff then text = ""..pref.." "..nthe..""..name.." "..suff.."" elseif pref then text = ""..pref.." "..nthe..""..name.."" elseif suff then text = nthe..""..name.." "..suff.."" else text = nthe..""..name.."" end elseif mn "d" then --data template --check if redirect if require('Module:Redirect').luaIsRedirect("Template:" .. naaaa .. " "..country) then text = ".. naaaa .. " "..country):fullUrl("redirect=no").." "..name.."" else text = ""..name.."" end elseif mn "u" then --unlinked text = name else --country link (default) text = ""..name.."" end end --Build image local ilink = args"ilink" if not ilink then if mi "x" or (iname placeholder and pimage~=placeholder) then --no image/invisible image iname = placeholder border = "" ilink = "|link=" am = "" elseif mi "i" then --image page link ilink = "" elseif mi "c" then --country link ilink = "|link="..clink..csec elseif mi "p" or mi "f" then --prefix/suffix link ilink = "|link="..flink..fsec elseif mi "d" then --data template --check if redirect if require('Module:Redirect').luaIsRedirect("Template:" .. naaaa .. " "..country) then ilink = "|link="..mw.title.new("Template:" .. naaaa .. " "..country):fullUrl("redirect=no") else ilink = "|link=Template:" .. naaaa .. " "..country end else --unlinked (default) ilink = "|link=" end end local image = " " --Combine image and name with separator local align = args"align" or args"al" local nalign = args"nalign" or args"nal" local align_map = {left="left", l="left", center="center", centre="center", c="center", middle="center", m="center", right="right", r="right"} local out if string.find(me,"r") then --image right of name if (ms "x" and mi "x") or (string.find(me,"o") and iname placeholder and pimage~=placeholder) then --name only out = text elseif ms "x" then --no separator out = text..""..image.."" elseif ms "n" then --non-breaking space out = text.." "..image.."" elseif ms "l" then --line break out = text.." "..image.."" elseif ms "t" then --table cell out = "style=\"text-align:"..(align_mapnalign or "left").."\"|"..text.."||style=\"text-align:"..(align_mapalign or "center")..";\"|"..image.."" else --fixed-width span box (default) local width = args"width" or args"w" or require("Module:Flaglist/size").luawidth(size) out = text..""..image.."" end else --image left of name if (ms "x" and mi "x") or (string.find(me,"o") and iname placeholder and pimage~=placeholder) then --name only out = text elseif ms "x" then --no separator out = ""..image..""..text elseif ms "n" then --non-breaking space out = ""..image.." "..text elseif ms "l" then --line break out = ""..image.." "..text elseif ms "t" then --table cell out = "style=\"text-align:"..(align_mapalign or "center")..";\"|"..image.."||style=\"text-align:"..(align_mapnalign or "left").."\"|"..text else --fixed-width span box (default) local width = nopx(args"width" or args"w") or require("Module:Flaglist/size").luawidth(size) out = ""..image..""..text end end if string.find(me,"w") then --avoid wrapping out = ""..out.."" end --Tracking categories local cat = "" if pimage and not image_mappimage and country~="" and dataalias" and not args.demo then cat = "Category:Pages using Flagg with specified image instead of data template image" end return out..cat end return p